JO

Tabelas

Por joaohd, 28 de mai. de 2010 em Tutoriais de Scripting

otserv
tibia
script
10
3.2k
joaohdJ
28 de maio de 2010 às 16:05

Olha eu de novo por aqui. Dessa vez, o tutorial é sobre tabelas.

 

Muitas pessoas, por não conhecerem o poder das tabelas, acabam criando scripts enormes e de difícil configuração.

 

Após a leitura deste tutorial, você estará apto a criar scripts com tabelas simples ou intermediárias, possibilitando o encurtamento de scripts e até mesmo uma melhor compreensão de scripts feitos com o uso das mesmas.

 

Para ter uma noção da imensidade e importância das tabelas em LUA, este é o único modo de armazenamento de dados, sejam eles numéricos ou textos (strings).

 

Observe como a tabela é representada em LUA:

 

Nome_da_tabela = {}

 

Quando verificar a existência das chaves “{}” em um script, estamos tratando de uma tabela.

 

Vamos criar agora uma tabelinha simples, somente para explicação:

 

Tabela = {“Xtibia”, “apocarai”, 1, 2, 3}

 

Como pode ver, criei uma tabela de conteúdo misto, contendo strings e números. Cada valor separado por vírgulas pode ser chamado de célula, contendo um endereço único que veremos mais à frente.

 

Caso eu queira o valor da primeira célula, devo conhecer seu endereço, que nada mais é que o nome da tabela seguido de seu índice:

 

Xtibia = Tabela[1]

apocarai = Tabela[2]

1 = Tabela[3]

 

Os índices existem mesmo que ocultos. Sempre que você cria uma tabela e não os especifica, subentende-se que cada célula receberá um índice de numero crescente partindo do 1.

 

Caso sejam especificados, estes podem ser escritos assim (existe outra maneira, mais avançada):

 

Tabela = {

Forum = “Xtibia”,

User = “apocarai”

}

 

Logo, para acessarmos qualquer valor da tabela, digitamos o endereço da célula, sendo que agora, o endereço é composto pelo nome da tabela, precedido de um ponto (.) e o índice.

 

Logo,

 

Xtibia = Tabela.Forum

Apocarai = Tabela.User

 

Após entender o básico, podemos passar para as tabelas múltiplas, que apesar de parecerem difíceis, seguem a mesma base das simples.

 

Exemplo de tabela múltipla:

 

TabelaMultipla = {

Xtibia = {assuntos = {“Otserver”, “Tibia”}, users = {“apocarai”, “Gustavo”, “Brumatt”}},

Google = {assuntos = {“Pesquisas”, “Jogos”}, users = {“Eu”, “Você”}}

}

 

Não, não desista ao se deparar com tabelas assim. A interpretação pode ser feita por meio de um organograma:

 

semttulomo.jpg

 

 

Já a parte dos índices são iguais. Por exemplo, quero pegar o valor 1 dos assuntos do xtibia:

 

TabelaMultipla.Xtibia.assuntos[1]

 

Fácil, não?

 

Agora, iremos aprender a obter o “tamanho” de uma tabela. Podemos fazê-lo de duas formas. Criarei uma tabela simples para a explicação:

 

Tabela = {1,2,3,4,5,6,7,8,9,10}

 

Maneira 1:

 

Usamos a função table.getn(tabela) ou a função table.maxn(tabela). O uso é da seguinte maneira:

 

table.getn(NOME DA TABELA)

table.maxn(NOME DA TABELA)

 

Maneira 2 (fácil) :

 

Inserimos o caracter “#” seguido do nome da tabela. Assim:

 

#NOME DA TABELA

 

 

Informações adicionais:

 

► O nome de uma tabela deve ser escrito sem espaços.

► O nome de uma tabela não deve conter caracteres coringas (!@%¨*)

► Tabelas não interpretam um valor vazio (nil)

 

Creio que seja isto por hoje. Vou deixar alguns exercícios simples, para fixação:

 

1)Crie uma tabela simples com 6 valores, onde cada valor é uma string com o nome de um usuário do xtibia.

2)Crie uma tabela múltipla com 3 valores principais, cada um com o nome de uma área do xtibia, e dentro das áreas, o nome de 2 frequentadores da área correspondente.

 

Respostas (tentem fazer primeiro, postando seus resultados):

 

1) Xtibia = {"apocarai", "matheusMkalo", "gustavo", "brumatt", "lordz", "carlos pain"}

 

2)Xtibia = {

Scripting = {"apocarai", "matheusmkalo"},

Design = {"moskitinho, "dj sky"},

Mapping = {"alissow", "brumatt"}

}

 

 

 

Materiais de apoio:

Funções LUA

Introdução à programação LUA + estruturas

Começando a "scriptear"

 

Tutorial sugerido por Vodkart.



Você também pode pedir o seu aqui

 

 

flw

Editado Maio 28 por apocarai

MatheusGladM
28 de maio de 2010 às 19:20

Otimo tutorial, vai ajudar bastante os iniciantes em scripting.

REP++

 

Kade o tutorial dos pairs e ipairs?

KydraiK
28 de maio de 2010 às 21:08

Muito bom seus tutoriais.

Rep+

 

Seria bom adicionar alguns erros que podem ocorrer no uso também.

 

a = {"oi"}
b = {"oi"}
print(a == b) -- false

Embora os conteúdos das tabelas sejam iguais elas são diferentes.

 

a = {"oi"}
b = a
b[1] = "tchau"
print(a == b) -- true

Nesse caso o "b" é uma referência para o "a", ou seja, quando fazemos b[1] = "tchau" é a mesma coisa que a[1] = "tchau", logo elas são a mesma tabela.

Isso pode fazer com que a pessoa mude o valor de "a" sem saber.

Editado Maio 28 por kydrai

Bruno1177B
29 de maio de 2010 às 17:32

Muito bom brother, tão bom quanto os outros!

Eu to no tutorial :o kkkkkk'

 

Continue fazendo apocarai.

 

 

Abraços. Aprovado!

joaohdJ
31 de maio de 2010 às 13:06

Valeu ae gente, to tentando trazer um pouco mais de conhecimento pra galera =D.

 

 

@Kydrai

 

Não entrei muito em detalhes técnicos até porque, o tutorial é voltado pro pessoal que n sabe nada de LUA.

 

 

 

flw

LorDzL
31 de maio de 2010 às 15:13

Muito bom,

Concerteza aprovado.

 

+REP

 

Abraços

joaohdJ
31 de maio de 2010 às 16:18

Dois tutoriais aprovados em 1 semana =D. Valeu ae LorDz.

 

Você também pode pedir seu tutorial: Clique aqui

 

 

 

 

 

 

 

 

flw

VodkartV
03 de junho de 2010 às 17:52

ótimo cara,estou meio sem tempo agora,até mesmo porque meu computador queimou,mais já consegui entender um pouco,e vou fazer as atividades quando meu pc chegar,o cara nem trouxe ainda...

mais as atividades são excelentes ajudam a estimular os conhecimentos!

parabens pelo seu trabalho

continue sempre assim

abraços

2 semanas depois...
matheus1000M
13 de junho de 2010 às 20:24

Muito bom.

 

apocarai e seus ótimos tutoriais...

+REP

1 ano depois...
eduardo190696E
22 de julho de 2011 às 13:06

mano brigadão eu tava fazendo o meu pet system por talkactions e tava precisando disso para por o level dos

summon nossa mano vc ajudo d++ mesmo ++REP

 

Fiquei só com uma duvida.

 

minha tabela

 

 

local pets = {

["Rat"] = {Level = 20},

["Dragon"] = {Level = 25}

}

 

como faço para o script identificar o level do summon

 

 

if getPlayerLevel(cid) < pets[tostring(a)].Level then

 

assim ? pfv aguardando respostas

Editado Julho 27 por eduardobean